
// 添加购物车 --------------------------------
function add(req, res) {
    //导入相关模块
    const db = require('../config/db');
    const CONFIG = require('../config/config');
    //接收参数并验证合法性
    const params = {
        gid: req.query.gid, // 商品id
        price: req.query.price, // 商品价格
        num: 1, // 商品数量
        mid: req.user.id // 登录用户的id
    };
    //判断商品ID是否有效
    let sqlStr = `select id from goods where id=${params.gid}`;
    db.query(sqlStr, (err, rst) => {
        if (rst.length == 0) return res.send(CONFIG.PARAM_GOODSID_INVALID);
        //判断商品是否已添加
        sqlStr = `select id from cart where gid=${params.gid} and mid=${params.mid}`;
        db.query(sqlStr, (err, rst) => {
            // 如果 当前用户 添加的 商品 ，已经 在 购物车 记录中 存在了
            // 那么 就需要更新整条记录的数量 +1
            if (rst.length > 0) {
                // 保存 本条 购物车 记录 的 id
                let cartLogId = rst[0].id;
                // 更新 本条 记录 数量+1
                sqlStr = `update cart set num=num+1 where id=${cartLogId}`
                // 执行 sql 语句
                db.query(sqlStr, (err, result) => {
                    if (err) return res.send(CONFIG.FAIL)
                    if (result.affectedRows < 1) return res.send(CONFIG.FAIL)
                    // 更新 购物车记录 成功
                    res.send({
                        ...CONFIG.SUCCESS, msg: '添加成功~~'
                    })
                })
            } else { //添加至购物车
                sqlStr = "insert into cart set ?";
                db.query(sqlStr, params, (err, rst) => {
                    if (err) {
                        console.log('---新增购物车记录 失败-----------------');
                        console.log(err);
                        return res.send(CONFIG.FAIL);
                    }
                    return res.send(CONFIG.SUCCESS);
                });
            }
        });
    });
}

function getlist(req, res) {

    let CONFIG = require('../config/config');
    let db = require('../config/db');

    //从 解密token中 获取的 用户id
    let mid = req.user.id;
    // 使用连表查询（内连接） 查询 当前登录用户 所 添加到 购物车 的 商品信息
    let sqlStr = `SELECT * FROM cart inner join goods on cart.gid = goods.id where cart.mid=${mid}`;
    console.log(sqlStr);
    db.query(sqlStr, (err, rst) => {
        // 准备 返回的消息对象，包含 查询的 购物车 数据
        let status = {
            code: CONFIG.SUCCESS.code,
            msg: CONFIG.SUCCESS.msg,
            data: rst // 登录用户的 购物车 数据
        };
        res.send(status); // 发给浏览器
    });
}

function remove(req, res) {
    let CONFIG = require('../config/config');
    let db = require('../config/db');

    let mid = req.user.uid;
    let id = req.query.id;

    let sqlStr = `delete from cart where mid=${mid} and id=${id}`;
    db.query(sqlStr, (err, rst) => {
        if (err) {
            return res.send(CONFIG.FAIL);
        }
        if (rst.affectedRows == 1) {
            return res.send(CONFIG.SUCCESS);
        } else {
            return res.send(CONFIG.RESULT_CART_NOT_EXIST);
        }
    });
}

function edit(req, res) {
    let CONFIG = require('../config/config');
    let db = require('../config/db');

    let mid = req.user.uid;
    let id = req.query.id;
    let num = req.query.num;

    let sqlStr = `update cart set num=${num} where mid=${mid} and id=${id}`;
    db.query(sqlStr, (err, rst) => {
        if (err) {
            return res.send(CONFIG.FAIL);
        }
        //如果没有该商品
        if (rst.affectedRows === 0) {
            return res.send(CONFIG.RESULT_CART_NOT_EXIST);
        } else {
            return res.send(CONFIG.SUCCESS);
        }
    });
}

module.exports = {
    add,
    getlist,
    remove,
    edit
}